//引入express模块
const express = require('express')
//path模块是node.js中处理路径的核心模块。可以很方便的处理关于文件路径的问题。
const path = require('path')
const {
    setTimeout
} = require('timers/promises')

//创建应用对象
const app = express()


//处理body请求体的中间件
app.use(express.urlencoded()) //处理form表单格式
app.use(express.json()) //处理json字符串格式



//查询学生信息接口  query传参
app.get('/user', (req, res) => {
    const {
        userId
    } = req.query //{ wd: 'wuhan', tel: '123456' }   这个是解构赋值选择对象身上的userId属性
    // console.log(res.query);

    const token = req.headers.token;
    console.log(token, 'token');
    if (!token) {
        return res.send({
            code: 10002,
            msg: '没有权限',
            data: null
        })
    }

    //查询失败 响应
    if (userId !== '001') {
        //return作用  先执行return后面的语句 然后退出函数
        return res.send({
            code: 10001,
            msg: '查失败',
            data: null
        })
    }

    //查询成功 响应
    res.send({
        code: 10000,
        msg: '查询成功',
        data: {
            name: 'zhang',
            age: 18,
            sex: '男'
        }
    })

})
app.get('/userLazy', (req, res) => {
    setTimeout(() => {
        const {
            userId
        } = req.query //{ wd: 'wuhan', tel: '123456' }   这个是解构赋值选择对象身上的userId属性
        // console.log(res.query);

        const token = req.headers.token;
        console.log(token, 'token');
        if (!token) {
            return res.send({
                code: 10002,
                msg: '没有权限',
                data: null
            })
        }

        //查询失败 响应
        if (userId !== '001') {
            //return作用  先执行return后面的语句 然后退出函数
            return res.send({
                code: 10001,
                msg: '查失败',
                data: null
            })
        }

        //查询成功 响应
        res.send({
            code: 10000,
            msg: '查询成功',
            data: {
                name: 'zhang',
                age: 18,
                sex: '男'
            }
        })

    },3000)

})

app.post('/adduser', (req, res) => {
    // console.log('adduser');
    // console.log(req.body);
    const {
        name,
        age,
        sex
    } = req.body
    if (!name || !age || !sex) {
        return res.send({
            code: 10001,
            mes: '添加失败',
            data: null
        })
    }
    res.send({
        code: 10000,
        mes: '添加成功',
        data: null
    })
})

//搭建路由  静态资源布署接口
app.get('/1', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './1.axios的基础使用.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/2', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './2.axios请求别名.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/3', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './3.创建axios实例.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/4', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './4.设置请求拦截器.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/5', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './5.响应拦截器.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/6', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './6.拦截器练习.html')

    //做出响应
    res.sendFile(filepath)

})
app.get('/7', (req, res) => {

    //resolve() 返回绝对路径
    const filepath = path.resolve(__dirname, './7.axios取消请求.html')

    //做出响应
    res.sendFile(filepath)

})



//设置端口
app.listen(8080, () => {
    console.log('服务器启动成功');
})